/*
 * Copyright (c) 2010 Curtis Boyden.  All rights reserved. 
 * This software was developed by Curtis Boyden and is provided under the terms 
 * of the GNU Lesser General Public License, Version 2.1. You may not use 
 * this file except in compliance with the license. If you need a copy of the license, 
 * please go to http://www.gnu.org/licenses/lgpl-2.1.txt. The Original Code is ejMud
 * (Ewerp Java MUD).  The Initial Developer is Curtis Boyden.
 *
 * Software distributed under the GNU Lesser Public License is distributed on an "AS IS" 
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or  implied. Please refer to 
 * the license for the specific language governing your rights and limitations.
*/

package com.ewerp.mud.entities;

import com.ewerp.mud.messages.IMessage;
import com.ewerp.server.content.persistence.IEntity;

public abstract class BaseEntity implements IEntity {
    protected long objectId;
    
    public abstract void processMessage(IMessage message);
    
    @Override
    public long getObjectId() {        
        return objectId;
    }

    public void setObjectId(long id) {
        objectId = id;
    }

    @Override
    public boolean equals(Object obj) {
        if(obj != null && !(obj instanceof BaseEntity)) {
            return false;
        }
        
        return getObjectId() == ((IEntity)obj).getObjectId();
    }

    @Override
    public int hashCode() {
        if(getObjectId() > Integer.MAX_VALUE) {
            return (int)(getObjectId() - Long.MAX_VALUE);
        }
        
        return (int)getObjectId();
    }

    @Override
    public String toString() {
        return getClass().getName() + ": " + getObjectId();
    }
}
